﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanCafe.QuanCafe_BUS_WebService;
using System.Threading;

namespace QuanCafe
{
    public partial class frmThucUong : Form
    {
        private QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();

        // tạo 1 biến lưu giá trị dòng hiện tại trong gridview
        private int _donghientai = 0;


        #region Khởi tạo các delegate

        #endregion


        #region Các xử lý ban đầu 

        public frmThucUong()
        {
            InitializeComponent();
            // sử dụng lớp DataGridViewColumnSelector
            DataGridViewColumnSelector cs = new DataGridViewColumnSelector(dgvDanhSachThucUong);
            cs.MaxHeight = 200;
            cs.Width = 200;
        }

        private void ttpInfo_Draw(object sender, DrawToolTipEventArgs e)
        {
            e.DrawBackground();
            e.DrawText();
        }

        private void frmThucUong_Load(object sender, EventArgs e)
        {
            dgvDanhSachThucUong.DataSource = ws.TU_LayDanhSachThucUong();
            ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
            bindding();
            cbbSearch.SelectedIndex = 0;
        }

        private void ptbAnhDaiDien_LoadProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            probAnhDaiDien.Visible = true;
        }

        private void ptbAnhDaiDien_LoadCompleted(object sender, AsyncCompletedEventArgs e)
        {
            probAnhDaiDien.Visible = false;
        }

        #endregion


        #region Viết các sự kiện chính cho form này

        // viết hàm load ảnh tại 1 thức uống đang được chọn
        private void dgvDanhSachThucUong_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (dgvDanhSachThucUong.CurrentRow != null)
                {
                    if (dgvDanhSachThucUong.CurrentRow.Index != _donghientai)
                    {
                        _donghientai = dgvDanhSachThucUong.CurrentRow.Index;
                        ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.CurrentRow.Cells[1].Value.ToString();
                    }
                }
                else
                {

                }
            }
            catch
            {
                // xuất ra thông báo
                MessageBox.Show("Thức uống này chưa được cập nhật hình ảnh!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        // viết hàm xem thông tin thức uống hiện có trong CSDL
        private void btnXemThucUong_Click(object sender, EventArgs e)
        {
            dgvDanhSachThucUong.DataSource = ws.TU_LayDanhSachThucUong();
            ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
            bindding();

        }

        // viết hàm binding
        private void bindding()
        {
            txtMaThucUong.DataBindings.Clear();
            txtMaThucUong.DataBindings.Add("Text", dgvDanhSachThucUong.DataSource, "Mathucuong");
            txtTenThucUong.DataBindings.Clear();
            txtTenThucUong.DataBindings.Add("Text", dgvDanhSachThucUong.DataSource, "Tenthucuong");
            txtDonGia.DataBindings.Clear();
            txtDonGia.DataBindings.Add("Text", dgvDanhSachThucUong.DataSource, "Dongia");
            txtNhom.DataBindings.Clear();
            txtNhom.DataBindings.Add("Text", dgvDanhSachThucUong.DataSource, "Nhom");
            txtTinhTrang.DataBindings.Clear();
            txtTinhTrang.DataBindings.Add("Text", dgvDanhSachThucUong.DataSource, "Tinhtrang");
        }

        // viết hàm gọi form ThemThucUong
        private void btnThemThucUong_Click(object sender, EventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(ShowFormThemThucUong));
            newThread.SetApartmentState(ApartmentState.STA);
            newThread.Start();
        }

        // viết hàm gọi form CapNhatThucUong
        private void btnCapNhatThucUong_Click(object sender, EventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(ShowFormCapNhatThucUong));
            newThread.SetApartmentState(ApartmentState.STA);
            newThread.Start();
        }

        #endregion


        #region Các hàm liên quan đến thread

        // show form ThemThucUong
        
        public void ShowFormThemThucUong()
        {
            frmTU_ThemThucUong form_themThucUong = new frmTU_ThemThucUong(dgvDanhSachThucUong.CurrentRow.Cells[1].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[2].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[3].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[4].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[5].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[6].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[7].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[8].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[9].Value.ToString());
            Application.Run(form_themThucUong);
        }

        // show form CapNhatThucUong
        public void ShowFormCapNhatThucUong()
        {
            frmTU_CapNhatThucUong form_CapNhat = new frmTU_CapNhatThucUong(dgvDanhSachThucUong.CurrentRow.Cells[1].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[2].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[3].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[4].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[5].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[6].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[7].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[8].Value.ToString(), dgvDanhSachThucUong.CurrentRow.Cells[9].Value.ToString());
            Application.Run(form_CapNhat);
        }

        #endregion


        #region Search dữ liệu

        // viết hàm search
        private void btnSearch_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtTuKhoa.Text.Length != 0)
                {
                    if (cbbSearch.SelectedIndex == 0) // tra theo mã
                    {
                        dgvDanhSachThucUong.DataSource = ws.TU_TraThucUongTheoMaThucUong(txtTuKhoa.Text);
                        ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
                        bindding();
                    }
                    else
                    {
                        if (cbbSearch.SelectedIndex == 1) // tra theo tên
                        {
                            dgvDanhSachThucUong.DataSource = ws.TU_TraThucUongTheoTen(txtTuKhoa.Text);
                            ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
                            bindding();
                        }
                        else
                        {
                            if (cbbSearch.SelectedIndex == 2) // tra theo don gia
                            {
                                float i = float.Parse(txtTuKhoa.Text);
                                dgvDanhSachThucUong.DataSource = ws.TU_TraThucUongTheoDonGia(i);
                                ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
                                bindding();
                            }
                            else
                            {
                                if (cbbSearch.SelectedIndex == 3) // tra theo nhóm
                                {
                                    dgvDanhSachThucUong.DataSource = ws.TU_TraThucUongTheoNhom(txtTuKhoa.Text);
                                    ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
                                    bindding();
                                }
                                else
                                {
                                    int i = int.Parse(txtTuKhoa.Text);
                                    dgvDanhSachThucUong.DataSource = ws.TU_TraThucUongTheoTinhTrang(i);
                                    ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
                                    bindding();
                                }
                            }
                        }
                    }
                }
            }
            catch
            { 
            
            }
        }

        private void txtTuKhoa_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnSearch_Click(sender, e);
            }
        }

        private void btnXoaThucUong_Click(object sender, EventArgs e)
        {
            DialogResult kq = MessageBox.Show("Bạn có thật sự muốn xóa thức uống này?","Question!",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
            if (kq == DialogResult.OK)
            {
                // gọi hàm xóa thức uống
                ws.TU_XoaThucUongThanhCong(dgvDanhSachThucUong.CurrentRow.Cells[2].Value.ToString());
                // sau đó, cập nhật lại
                dgvDanhSachThucUong.DataSource = ws.TU_LayDanhSachThucUong();
                ptbAnhDaiDien.ImageLocation = dgvDanhSachThucUong.Rows[0].Cells[1].Value.ToString();
                bindding();
                // xuất ra thông báo
                MessageBox.Show("Thức uống được xóa thành công!", "Information!", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
        }

        #endregion

        





    }
}
